/*
 * metismenu - v1.1.3
 * Easy menu jQuery plugin for Twitter Bootstrap 3
 * https://github.com/onokumus/metisMenu
 *
 * Made by Osman Nuri Okumus
 * Under MIT License
 */
;(function($, window, document, undefined) {
  
      var pluginName = "metisMenu",
          defaults = {
              toggle: true,
              doubleTapToGo: false
          };
  
      function Plugin(element, options) {
          this.element = $(element);
          this.settings = $.extend({}, defaults, options);
          this._defaults = defaults;
          this._name = pluginName;
          this.init();
      }
  
      Plugin.prototype = {
          init: function() {
  
              var $this = this.element,
                  $toggle = this.settings.toggle,
                  obj = this;
  
              if (this.isIE() <= 9) {
                  $this.find("li.active").has("ul").children("ul").collapse("show");
                  $this.find("li").not(".active").has("ul").children("ul").collapse("hide");
              } else {
                  $this.find("li.active").has("ul").children("ul").addClass("collapse in");
                  $this.find("li").not(".active").has("ul").children("ul").addClass("collapse");
              }
  
              //add the "doubleTapToGo" class to active items if needed
              if (obj.settings.doubleTapToGo) {
                  $this.find("li.active").has("ul").children("a").addClass("doubleTapToGo");
              }
  
              $this.find("li").has("ul").children("a").on("click" + "." + pluginName, function(e) {
                  e.preventDefault();
  
                  //Do we need to enable the double tap
                  if (obj.settings.doubleTapToGo) {
  
                      //if we hit a second time on the link and the href is valid, navigate to that url
                      if (obj.doubleTapToGo($(this)) && $(this).attr("href") !== "#" && $(this).attr("href") !== "") {
                          e.stopPropagation();
                          document.location = $(this).attr("href");
                          return;
                      }
                  }
  
                  $(this).parent("li").toggleClass("active").children("ul").collapse("toggle");
  
                  if ($toggle) {
                      $(this).parent("li").siblings().removeClass("active").children("ul.in").collapse("hide");
                  }
  
              });
          },
  
          isIE: function() { //https://gist.github.com/padolsey/527683
              var undef,
                  v = 3,
                  div = document.createElement("div"),
                  all = div.getElementsByTagName("i");
  
              while (
                  div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->",
                      all[0]
                  ) {
                  return v > 4 ? v : undef;
              }
          },
  
          //Enable the link on the second click.
          doubleTapToGo: function(elem) {
              var $this = this.element;
  
              //if the class "doubleTapToGo" exists, remove it and return
              if (elem.hasClass("doubleTapToGo")) {
                  elem.removeClass("doubleTapToGo");
                  return true;
              }
  
              //does not exists, add a new class and return false
              if (elem.parent().children("ul").length) {
                  //first remove all other class
                  $this.find(".doubleTapToGo").removeClass("doubleTapToGo");
                  //add the class on the current element
                  elem.addClass("doubleTapToGo");
                  return false;
              }
          },
  
          remove: function() {
              this.element.off("." + pluginName);
              this.element.removeData(pluginName);
          }
  
      };
  
      $.fn[pluginName] = function(options) {
          this.each(function () {
              var el = $(this);
              if (el.data(pluginName)) {
                  el.data(pluginName).remove();
              }
              el.data(pluginName, new Plugin(this, options));
          });
          return this;
      };
  
  })(jQuery, window, document);